k = 9e9;  % 定义常量k
q1 = 1e-9;  % 定义电荷q1
q2 = -1e-9;  % 定义电荷q2
a = 0.02;  % 定义距离a
x0 = 0.1;  % 定义x方向范围
y0 = 0.1;  % 定义y方向范围

x = linspace(-x0, x0, 30);  % 在x方向上创建均匀分布的点
y = linspace(-y0, y0, 30);  % 在y方向上创建均匀分布的点
[x, y] = meshgrid(x, y);  % 创建二维网格坐标

r1 = sqrt((x - a).^2 + y.^2);  % 计算到q1的距离
r2 = sqrt((x + a).^2 + y.^2);  % 计算到q2的距离

U = k * q1 ./ r1 + k * q2 ./ r2;  % 计算电势U

u = linspace(500, -500, 11);  % 创建等电位线的电势值

contour(x, y, U, u, 'k--');  % 绘制等电位线
grid on;  % 显示网格线
hold on;  % 保持绘图

plot(a, 0, 'o', 'MarkerSize', 12);  % 在坐标点(a,0)处绘制一个圆点代表电荷q1
plot(-a, 0, 'o', 'MarkerSize', 12);  % 在坐标点(-a,0)处绘制一个圆点代表电荷q2

xlabel('等电位线');  % 设置x轴标签
ylabel('等电位线');  % 设置y轴标签

[Ex, Ey] = gradient(-U);  % 计算电场的x和y分量
E = sqrt(Ex.^2 + Ey.^2);  % 计算电场的大小
Ex = Ex ./ E;  % 归一化电场的x分量
Ey = Ey ./ E;  % 归一化电场的y分量

quiver(x, y, Ex, Ey);  % 绘制电场箭头图